home *** CD-ROM | disk | FTP | other *** search
-
- ( Creates a saturnus planet with rings consisting of particles
- ( ------------------------------------------------------------
-
- 6.28 FCONSTANT PI2
-
- "rpl/sys/locks.rpl" LOAD
-
- ( Material for planet
-
- : CreMaterial
-
- iLOCK_EXCL MAT_LOCK
-
- "planet" ( name )
- 0 ( specularity )
- 25 ( specbright )
- 0 ( brilliancy )
- 0 ( transparency )
- 0 ( turbidity )
- 0 ( refraction )
- 0 ( currindex )
- 100 ( effectiveness )
- 0 ( density )
- 0 ( roughness )
- 204 ( flags )
- 46 ( turbidpower )
- 6 ( method )
- 0 ( handler )
- 0 ( txt_freqx )
- 0 ( txt_freqy )
- 0 ( sp_x )
- 0 ( sp_y )
- 1 ( sp_w )
- 1 ( sp_h )
- "" ( handler_prg )
- "marble1" ( picture )
- 0 0 0 0 ( transp.color )
- 5 ( bumph )
- 0 ( ditherscale )
- 0 ( scopehandler )
- "" ( scopeexpr )
- 0 ( scope1 )
- 0 ( scope2 )
- 0 ( tcoorhandler )
- "" ( tcoorexpr )
- 0 ( tco1 )
- 0 ( tco2 )
- 0 ( bumphandler )
- "" ( bumpexpr )
- 0 ( bmp1 )
- 0 ( bmp2 )
- 0 ( colorhandler )
- "" ( colorexpr )
- 0 ( co1 )
- 0 ( co2 )
- 0 ( indexhandler )
- "" ( indexexpr )
- 0 ( id1 )
- 0 ( id2 )
- "CEND"
- MAT_CREATE DROP
-
- iLOCK_REMOVE MAT_LOCK
- ;
-
- ( see rpl/sys/objects.rpl
- 2 2 POW CONSTANT lOF_WFINVISIBLE ( Invisible wire frames
-
- ( This function creates the actual planet
-
- : CrPlanet
- PARAM
- FVARIABLE fPlanetSize
- ENDPARAM
-
- 2 "planet" 0 "CEND" C_LEVEL O_CURRENT DROP
-
- 0 0 0 ( center
- fPlanetSize FFETCH 0 0 ( a
- 0 fPlanetSize FFETCH 0 ( b
- 0 0 fPlanetSize FFETCH ( c
- 255 255 255 0 ( RGBA )
- "planet"
- 0
- "CEND"
- C_ELLIPSOID DROP
-
- 0 0 0 ( center
- fPlanetSize FFETCH 0 0 ( a
- 0 fPlanetSize FFETCH 0 ( b
- 0 0 fPlanetSize FFETCH ( c
- 255 255 255 0 ( RGBA )
- "planet" ( name )
- 2048 ( flags = texture )
- "CEND"
- "planet" "SMAT"
- C_ELLIPSOID DROP
-
- O_GETCURR O_GETPAR O_CURRENT DROP
- ;
-
- ( This creates one particle in given position
-
- : CrParticle
- PARAM
- VVARIABLE vCenter
- FVARIABLE fPartSize
- VARIABLE iWireFrames
- VARIABLE iRed
- VARIABLE iGreen
- VARIABLE iBlue
- ENDPARAM
-
- vCenter VFETCH
- fPartSize FFETCH 0 0 ( a )
- 0 fPartSize FFETCH 0 ( b )
- 0 0 fPartSize FFETCH ( c )
-
- iRed FETCH iGreen FETCH iBlue FETCH 0 ( RGBA )
- "particle"
- iWireFrames FETCH
- IF
- 0
- ELSE
- lOF_WFINVISIBLE
- ENDIF
- "CEND"
- C_ELLIPSOID DROP
- ;
-
-
- ( Computes radius for particle in question
-
- : CrRad
- PARAM
- VARIABLE iCircOrd
- FVARIABLE fPartSize
- FVARIABLE fPlanetSize
- ENDPARAM
-
- iCircOrd FETCH fPartSize FFETCH 4 F* F* fPlanetSize FFETCH 1.5 F* F+
- fPartSize FFETCH 0.3 F* RANDOM F* F+
- ;
-
-
- ( Computes angle for particle in question
-
- : CrAngle
- PARAM
- VARIABLE iPartOrd
- VARIABLE iPartCnt
- ENDPARAM
-
- iPartOrd FETCH iPartCnt FETCH F/ PI2 F* PI2 iPartCnt FETCH F/ RANDOM F* F+
- ;
-
- : CrSaturnus
- PARAM
- VARIABLE iPartCnt
- VARIABLE iCircCnt
- FVARIABLE fPartSize
- FVARIABLE fPlanetSize
- VARIABLE iWireFrames
- VARIABLE iRed
- VARIABLE iGreen
- VARIABLE iBlue
- ENDPARAM
-
- CreMaterial
-
- iLOCK_EXCL O_LOCK
-
- ( create planet
- fPlanetSize FFETCH CrPlanet
-
- ( create rings
- 2 "rings" 0 "CEND" C_LEVEL O_CURRENT DROP
-
- iCircCnt FETCH 0
- DO
- iPartCnt FETCH 0
- DO
- I iPartCnt FETCH CrAngle SIN J fPartSize FFETCH fPlanetSize FFETCH CrRad F*
- I iPartCnt FETCH CrAngle COS J fPartSize FFETCH fPlanetSize FFETCH CrRad F*
- fPartSize FFETCH RANDOM F*
- fPartSize FFETCH
- iWireFrames FETCH
- iRed FETCH
- iGreen FETCH
- iBlue FETCH
- CrParticle
- LOOP
- LOOP
- iLOCK_REMOVE O_LOCK
- ;
-
- CrSaturnus
-
- FORGET PI2
-
-